#pragma once


#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<stdbool.h>

typedef int QueueDataType;

typedef struct QueueNode
{
	QueueDataType data;
	struct QueueNode* next;
}QN;

typedef struct Queue
{
	QN* head;
	QN* tail;
	int size;
}Queue;

void QueueInit(Queue* s);
void QueuePush(Queue* s, QueueDataType x);
void QueuePop(Queue* s);
bool QueueEmpty(Queue* s);
int QueueSize(Queue* s);
QueueDataType QueueFront(Queue* s);
QueueDataType QueueBack(Queue* s);
void QueueDestory(Queue* s);